A network interface of a computing device may receive hundreds—and, in some instances, hundreds of thousands or millions—of network packets per second during periods of high packet ingress. Likewise, during periods of low packet ingress, the same network interface may only receive network packets a rate of only a few packets per second. In either case, the network interface asserts a packet ingress interrupt to signal the receipt of network packets to a network driver, a protocol stack, and/or applications of the computing device that need the packet data. In many applications, such as, for example, in highly pipelined processors, interrupts are inefficient, and a high rate of interrupt generation can drastically increase the load on the processors of the computing device.
During periods of high packet ingress, in which a corresponding large number of interrupts are generated, the processors are highly utilized for interrupt processing. In such cases, the processors may not have enough bandwidth to service all of the received packets. Additionally, the processing resources available to other system components (e.g., the protocol stack, operating system, and application programs) are reduced. Further, a high rate of packet ingress (and the corresponding high rate of interrupt generation) can lead to delays in sending acknowledgements and may cause subsequently received packets to be lost. Thus, a high rate of interrupt generation due to packet ingress can reduce overall throughput and system reliability.
To alleviate the problems associated with high packet ingress rates, some network interfaces moderate the assertion of interrupts. Interrupt moderation typically enables a single interrupt to signal receipt of multiple packets, thereby reducing the number of interrupts generated during periods of high packet ingress. As such, interrupt moderation may be useful for high-speed applications. However, interrupt moderation may be less useful during periods of low packet ingress. During such periods, interrupt moderation may add latency and reduce network throughput because a received network packet may be required to wait for assertion of an interrupt until additional packets have been received.